package action;

import com.opensymphony.xwork2.ActionSupport;
import java.sql.SQLException;
import java.util.List;
import model.Curso;
import model.Professor;

public class CursoAction extends ActionSupport{
    private List<Curso> cursos;
    private int codCurso;
    private String operacao;
    private Curso curso;
    private List<Professor> professores;
    private String[] tipoCurso = { "Superior" , "Tecnico" };
    private String readOnly;
    private String readOnlyCod;

    public String getReadOnlyCod() {
        return readOnlyCod;
    }

    public void setReadOnlyCod(String readOnlyCod) {
        this.readOnlyCod = readOnlyCod;
    }

    public String getReadOnly() {
        return readOnly;
    }

    public void setReadOnly(String readOnly) {
        this.readOnly = readOnly;
    }
    
    public String getOperacao() {
        return operacao;
    }

    public void setOperacao(String operacao) {
        this.operacao = operacao;
    }

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    public List<Professor> getProfessores() {
        return professores;
    }

    public void setProfessores(List<Professor> professores) {
        this.professores = professores;
    }
    
    public List<Curso> getCursos() {
        return cursos;
    }

    public void setCursos(List<Curso> cursos) {
        this.cursos = cursos;
    }

    public int getCodCurso() {
        return codCurso;
    }

    public void setCodCurso(int codCurso) {
        this.codCurso = codCurso;
    }

    public String[] getTipoCurso() {
        return tipoCurso;
    }

    public void setTipoCurso(String[] tipoCurso) {
        this.tipoCurso = tipoCurso;
    }
    
    
    
    public String pesquisar() throws ClassNotFoundException, SQLException{
        cursos = Curso.obterCursos();
        
        return "pesquisar";
    }
    
    public String editar() throws ClassNotFoundException, SQLException{
        operacao = "Editar";
        readOnly = "";
        readOnlyCod = "true";
        curso = Curso.obterCurso(codCurso);
        professores = Professor.obterProfessores();
        return "manter";
    }
    
    public String incluir() throws ClassNotFoundException, SQLException{
        operacao = "Incluir";
        readOnly = "";
        readOnlyCod = "";
        curso = new Curso();
        professores = Professor.obterProfessores();
        return "manter";
    }
    
    public String excluir() throws ClassNotFoundException, SQLException{
        operacao = "Excluir";
        readOnly = "true";
        readOnlyCod = "true";
        curso = Curso.obterCurso(codCurso);
        professores = Professor.obterProfessores();
        return "manter";
    }
    
    public String confirmar() throws SQLException, ClassNotFoundException{
        professores = Professor.obterProfessores();
        boolean erro = false;
        if(curso.getCodCurso() == 0){
            erro = true;
            addFieldError("curso.codCurso", "Código do curso não pode ser NULO");
        }
        if(curso.getNome() == null || curso.getNome().equals("")){
            erro = true;
            addFieldError("curso.nome", "Nome do curso não pode ser NULO");
        }
        if(curso.getTotalPeriodos() == null || curso.getTotalPeriodos() == 0){
            erro = true;
            addFieldError("curso.totalPeriodos", "Total de Periodos do curso não pode ser NULO");
        }
        
        if(curso.getCargaHoraria()== null || curso.getCargaHoraria()== 0){
            erro = true;
            addFieldError("curso.cargaHoraria", "Carga Horaria do curso não pode ser NULO");
        }
        
        if(erro){
            return INPUT;
        }
        
        if(operacao.equals("Incluir")){
            curso.gravar();
        } else {
            if(operacao.equals("Editar")){
                curso.editar();
            } else {
                if(operacao.equals("Excluir")){
                    curso.excluir();
                }
            }
        }
        
        cursos = Curso.obterCursos();
        return "pesquisar";
    }
    
    public String voltar(){
        return "voltar";
    }
    
    
    
}
